gdouble y,
GtkListBox *box);
+static void gtk_list_box_update_row_styles (GtkListBox *box);
+static void gtk_list_box_update_row_style (GtkListBox *box,
+ GtkListBoxRow *row);
static GParamSpec *properties[LAST_PROPERTY] = { NULL, };
static guint signals[LAST_SIGNAL] = { 0 };
priv->selection_mode = mode;
+ gtk_list_box_update_row_styles (box);
+
g_object_notify_by_pspec (G_OBJECT (box), properties[PROP_SELECTION_MODE]);
if (dirty)
if (ROW_PRIV (row)->visible)
list_box_add_visible_rows (box, 1);
gtk_list_box_apply_filter (box, row);
+ gtk_list_box_update_row_style (box, row);
if (gtk_widget_get_visible (GTK_WIDGET (box)))
{
gtk_list_box_update_header (box, ROW_PRIV (row)->iter);
}
static void
-update_row_style (GtkListBoxRow *row)
+gtk_list_box_update_row_style (GtkListBox *box,
+ GtkListBoxRow *row)
{
GtkStyleContext *context;
+ gboolean can_select;
+
+ if (box && BOX_PRIV (box)->selection_mode != GTK_SELECTION_NONE)
+ can_select = TRUE;
+ else
+ can_select = FALSE;
context = gtk_widget_get_style_context (GTK_WIDGET (row));
- if (ROW_PRIV (row)->activatable)
+ if (ROW_PRIV (row)->activatable ||
+ (ROW_PRIV (row)->selectable && can_select))
gtk_style_context_add_class (context, GTK_STYLE_CLASS_BUTTON);
else
gtk_style_context_remove_class (context, GTK_STYLE_CLASS_BUTTON);
}
+static void
+gtk_list_box_update_row_styles (GtkListBox *box)
+{
+ GSequenceIter *iter;
+ GtkListBoxRow *row;
+
+ for (iter = g_sequence_get_begin_iter (BOX_PRIV (box)->children);
+ !g_sequence_iter_is_end (iter);
+ iter = g_sequence_iter_next (iter))
+ {
+ row = g_sequence_get (iter);
+ gtk_list_box_update_row_style (box, row);
+ }
+}
+
/**
* gtk_list_box_row_set_activatable:
* @row: a #GTkListBoxrow
{
ROW_PRIV (row)->activatable = activatable;
- update_row_style (row);
+ gtk_list_box_update_row_style (gtk_list_box_row_get_box (row), row);
g_object_notify (G_OBJECT (row), "activatable");
}
}
ROW_PRIV (row)->selectable = selectable;
- update_row_style (row);
+ gtk_list_box_update_row_style (gtk_list_box_row_get_box (row), row);
g_object_notify (G_OBJECT (row), "selectable");
}
}